За последние 24 часа нас посетили 17446 программистов и 1400 роботов. Сейчас ищут 429 программистов ...

Какая то ошибка в запросе

Тема в разделе "PHP для новичков", создана пользователем ilya45, 11 фев 2023.

  1. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    PHP:
    1. if (!empty($text)) {
    2.     $add_com = "INSERT INTO comments (comment,ilan_id,    ilan_sahibi,yazan_kisi,date,ip_address,status) VALUES (?,?,?,?,?,?,?)";
    3.     $connect->prepare($add_com)->execute(["$text,$id,$ilan_sahibi,$username,$a,$ip_address,'yayında'"]);
    4.     header('Location: ../comments.php');
    5.    
    6.  
    7. }
    возвращает
    atal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in D:\OSPanel\domains\iscok\vendor\add_com.php:46 Stack trace: #0 D:\OSPanel\domains\iscok\vendor\add_com.php(46): PDOStatement->execute() #1 {main} thrown in D:\OSPanel\domains\iscok\vendor\add_com.php on line 46
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.773
    Симпатии:
    643
    Переведи Гугл-переводчиком на турецкий. В сообщении четко написано, в чем проблема.
    --- Добавлено ---
    И, да, не с той стороны ты подступился к РНР, раз допускаешь такие ошибки. Я, даже когда был совсем зеленый, таких ошибок не допускал.
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.773
    Симпатии:
    643
    P.S. Значение поля status можно прямо в текст запроса вписать, избавившись от одного параметра ;) Хотя формально у тебя сейчас и так всего один параметр :D

    И лепить статусы вроде текста «активно» прямо в такую таблицу противоречит принципам построения БД (если у тебя там не какой-нибудь ENUM) ;)
     
    #3 miketomlin, 11 фев 2023
    Последнее редактирование: 11 фев 2023
  4. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    ДА я смотрел,там видать в запросе в парамметрах что я выводил,через запятую ошибка,не могу найти ее.
    Ну хз,значит у тя источники были нормальными или я не способный человек значит и что,это не помогает мне решить проблему чел
    --- Добавлено ---
    Ну вдруг чел удалить коммент или смс,там будет "неактивно" и сообщение не выведится,только админ сможет видеть,почему противоречит принципам построения бд то
    --- Добавлено ---
    крч ты написал 2 комма,но ни одним не помог решить проблему
     
    #4 ilya45, 12 фев 2023
    Последнее редактирование: 12 фев 2023
  5. Survivor

    Survivor Новичок

    С нами с:
    8 фев 2023
    Сообщения:
    21
    Симпатии:
    1
    PHP:
    1. //- test +
    2. $text         = 'Привет';
    3. $id           = 1;
    4. $ilan_sahibi  = 1;
    5. $username     = 'test';
    6. $a            = time();
    7. $ip_address   = '127.0.0.1';
    8. $str          = 'yayında';
    9. //- test -
    10.  
    11.  
    12. $go = $connect->prepare("INSERT INTO `comments` ( `comment`, `ilan_id`, `ilan_sahibi`, `yazan_kisi`, `date`, `ip_address`, `status`) VALUES ( ?, ?, ?, ?, ?, ?, ?)");
    13. $go->bind_param("siisiss", $text, $id, $ilan_sahibi, $username, $a, $ip_address, $str);
    14. $go->execute();
    15.  
    16. var_dump($go);
     
    ilya45 нравится это.
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.773
    Симпатии:
    643
    Мои комменты для развивающихся. А тупо решить проблему – это сейчас к нейросетям :D
    --- Добавлено ---
    Вон выше какая-то «нейросеть» подогнала тебе решение. Даже тупо воткнула в него bind_param, чтобы ты так и не понял, какую ошибку изначально допустил. Но, т.к. это нейросеть, она все равно сильно лоханулась :D Так что пока придется развиваться. Или сформулировать для нейросети уточняющий вопрос :D
    --- Добавлено ---
    Речь вообще не об этом была, а о том, как хранить статусы в показанной таблице. В общем развивай свои навыки, чтобы понимать, о чем тебе пишут хотя бы начинающие программисты вроде меня. Пока что ты для меня такой же инопланетянин, как я для тебя.
     
    #6 miketomlin, 12 фев 2023
    Последнее редактирование: 12 фев 2023
  7. antoniii

    antoniii Новичок

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    @ilya45 тут человек писал что ошибки и предупреждения нужно переводить хотя бы переводчиком. В них очень часто прямо написана причина ошибки. Скажем лишний знак вопроса [Invalid parameter number: number of bound variables does not match number of tokens] или отсутствие символа (;)
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.773
    Симпатии:
    643
    К слову, со знаками вопроса там вроде все в порядке ;)
     
  9. antoniii

    antoniii Новичок

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Invalid parameter number это Invalid parameter number
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.773
    Симпатии:
    643
    Да, я делал подсказку, которую ты проигнорировал:
     
  11. ilya45

    ilya45 Новичок

    С нами с:
    1 янв 2023
    Сообщения:
    86
    Симпатии:
    2
    Помогли с ошибкой,ошибка была в запросе,кавычки тут лишние
    ->execute([$text,$id,$ilan_sahibi,$username,$a,$ip_address,'yayında']);
    Я прекрасно понимаю,что ты умеешь введу.Я и не прошу дать мне рыбу,я прошу дать удочку,а не пустые коммы,друг.
    Мне бы хотя бы источник,тут мог бы написать,приссмотрись к запросу внимательней,учись делать правильно запросы,кидай много запросов и тогда ты начнешь уже оттачивать их.Мог бы так написать,я не прошу исправленный код. А где узнать эту тему то,правильно статусы в бд ставить,ну то что тебе не понрнавилось в статусах
    --- Добавлено ---
    НУ я перевел,там я понял так,что количество токенов не соответствует количеству парамметров в execute,но не мог понять почему,вроде через запятую все перечислял
    --- Добавлено ---
    Я не игнорировал это,я понял,что система тока 1 параметр видит,но не мог понять почему,вроде перечисление параметров сделано верно